@@ -2,11 +2,7 @@ |
||
| 2 | 2 |
|
| 3 | 3 |
from __future__ import division |
| 4 | 4 |
|
| 5 |
-import os |
|
| 6 |
- |
|
| 7 |
-import shortuuid |
|
| 8 | 5 |
from curtail_uuid import CurtailUUID |
| 9 |
-from django.conf import settings |
|
| 10 | 6 |
from django.contrib.auth.hashers import check_password |
| 11 | 7 |
from django.db import transaction |
| 12 | 8 |
from isoweek import Week |
@@ -30,8 +26,6 @@ from utils.redis.rorder import set_lensman_order_record |
||
| 30 | 26 |
from utils.redis.rprice import get_lensman_price_fixed, set_lensman_price_fixed |
| 31 | 27 |
from utils.redis.rprofile import set_profile_info |
| 32 | 28 |
from utils.storage_utils import file_save |
| 33 |
-from utils.thumbnail_utils import make_thumbnail |
|
| 34 |
-from utils.watermark_utils import watermark_wrap |
|
| 35 | 29 |
|
| 36 | 30 |
|
| 37 | 31 |
@logit |
@@ -2,7 +2,6 @@ |
||
| 2 | 2 |
|
| 3 | 3 |
from __future__ import division |
| 4 | 4 |
|
| 5 |
-import os |
|
| 6 | 5 |
import random |
| 7 | 6 |
|
| 8 | 7 |
from curtail_uuid import CurtailUUID |
@@ -32,7 +31,6 @@ from utils.redis.rorder import get_lensman_order_record |
||
| 32 | 31 |
from utils.redis.rprice import get_lensman_price_fixed |
| 33 | 32 |
from utils.sql.raw import PAI2_HOME_API |
| 34 | 33 |
from utils.storage_utils import file_save |
| 35 |
-from utils.thumbnail_utils import make_thumbnail |
|
| 36 | 34 |
from utils.time_utils import origin_expired_stamps |
| 37 | 35 |
from utils.url_utils import img_url, share_url |
| 38 | 36 |
|
@@ -1,6 +1,5 @@ |
||
| 1 | 1 |
# -*- coding: utf-8 -*- |
| 2 | 2 |
|
| 3 |
-from django.conf import settings |
|
| 4 | 3 |
from django.conf.urls import include, url |
| 5 | 4 |
|
| 6 | 5 |
|
@@ -2,9 +2,7 @@ |
||
| 2 | 2 |
|
| 3 | 3 |
import os |
| 4 | 4 |
|
| 5 |
-import shortuuid |
|
| 6 | 5 |
from curtail_uuid import CurtailUUID |
| 7 |
-from django.conf import settings |
|
| 8 | 6 |
from django.db import transaction |
| 9 | 7 |
from django.shortcuts import render |
| 10 | 8 |
from django_q.tasks import async |
@@ -25,8 +23,6 @@ from utils.redis.rkeys import (GROUP_LAST_PHOTO_PK, GROUP_USERS_DELETED_SET, GRO |
||
| 25 | 23 |
GROUP_USERS_QUIT_SET, GROUP_USERS_REFUSED_SET, UUID_LIST) |
| 26 | 24 |
from utils.redis.ruuid import generate_uuids, update_uuids |
| 27 | 25 |
from utils.storage_utils import file_save |
| 28 |
-from utils.thumbnail_utils import make_thumbnail |
|
| 29 |
-from utils.watermark_utils import watermark_wrap |
|
| 30 | 26 |
|
| 31 | 27 |
|
| 32 | 28 |
@logit |
@@ -163,24 +159,7 @@ def session_join_api(request): |
||
| 163 | 159 |
# |
| 164 | 160 |
if group_created: |
| 165 | 161 |
for photo in photos: |
| 166 |
- photo_path = photo.p_photo_path |
|
| 167 |
- photo_thumbnail_path = photo_path.replace('.', '_thumbnail.')
|
|
| 168 |
- photo_thumbnail2_path = photo_path.replace('.', '_thumbnail2.')
|
|
| 169 |
- |
|
| 170 |
- # 群组照片缩略图生成 |
|
| 171 |
- # 双列: 540, 40-50K |
|
| 172 |
- photo_w, photo_h, photo_thumbnail_w, photo_thumbnail_h = make_thumbnail( |
|
| 173 |
- os.path.join(settings.MEDIA_ROOT, photo_path).replace('\\', '/'),
|
|
| 174 |
- os.path.join(settings.MEDIA_ROOT, photo_thumbnail_path).replace('\\', '/'),
|
|
| 175 |
- settings.THUMBNAIL_MAX_WIDTH |
|
| 176 |
- ) |
|
| 177 |
- |
|
| 178 |
- # 单列: 1080, xx-100K |
|
| 179 |
- photo_w, photo_h, photo_thumbnail2_w, photo_thumbnail2_h = make_thumbnail( |
|
| 180 |
- os.path.join(settings.MEDIA_ROOT, photo_path).replace('\\', '/'),
|
|
| 181 |
- os.path.join(settings.MEDIA_ROOT, photo_thumbnail2_path).replace('\\', '/'),
|
|
| 182 |
- settings.THUMBNAIL_MAX_WIDTH2 |
|
| 183 |
- ) |
|
| 162 |
+ photo_info = file_save(photo_path=photo.p_photo_path, thumbnail=True) |
|
| 184 | 163 |
|
| 185 | 164 |
# 群组照片记录创建 |
| 186 | 165 |
group_photo = GroupPhotoInfo.objects.create( |
@@ -188,15 +167,15 @@ def session_join_api(request): |
||
| 188 | 167 |
user_id=user_id, |
| 189 | 168 |
nickname=user.final_nickname, |
| 190 | 169 |
avatar=user.avatar, |
| 191 |
- photo_path=photo_path, |
|
| 192 |
- photo_w=photo_w, |
|
| 193 |
- photo_h=photo_h, |
|
| 194 |
- photo_thumbnail_path=photo_thumbnail_path, |
|
| 195 |
- photo_thumbnail_w=photo_thumbnail_w, |
|
| 196 |
- photo_thumbnail_h=photo_thumbnail_h, |
|
| 197 |
- photo_thumbnail2_path=photo_thumbnail2_path, |
|
| 198 |
- photo_thumbnail2_w=photo_thumbnail2_w, |
|
| 199 |
- photo_thumbnail2_h=photo_thumbnail2_h, |
|
| 170 |
+ photo_path=photo_info.photo_path, |
|
| 171 |
+ photo_w=photo_info.photo_w, |
|
| 172 |
+ photo_h=photo_info.photo_h, |
|
| 173 |
+ photo_thumbnail_path=photo_info.photo_thumbnail_path, |
|
| 174 |
+ photo_thumbnail_w=photo_info.photo_thumbnail_w, |
|
| 175 |
+ photo_thumbnail_h=photo_info.photo_thumbnail_h, |
|
| 176 |
+ photo_thumbnail2_path=photo_info.photo_thumbnail2_path, |
|
| 177 |
+ photo_thumbnail2_w=photo_info.photo_thumbnail2_w, |
|
| 178 |
+ photo_thumbnail2_h=photo_info.photo_thumbnail2_h, |
|
| 200 | 179 |
photo_from=GroupPhotoInfo.SESSION_GROUP, |
| 201 | 180 |
session_id=photo.session_id, |
| 202 | 181 |
lensman_id=photo.lensman_id, |
@@ -22,21 +22,27 @@ class DotDict(dict): |
||
| 22 | 22 |
|
| 23 | 23 |
|
| 24 | 24 |
@transaction.atomic |
| 25 |
-def file_save(file_, prefix='img', ext='jpeg', watermark=False, thumbnail=False): |
|
| 26 |
- ext = os.path.splitext(file_.name)[-1] or ext |
|
| 25 |
+def file_save(photo=None, photo_path=None, prefix='img', ext='jpeg', watermark=False, thumbnail=False): |
|
| 26 |
+ # Photo |
|
| 27 |
+ photo = photo or default_storage.open(photo_path) |
|
| 27 | 28 |
|
| 28 |
- photo, created = PhotoUUIDInfo.objects.select_for_update().get_or_create(photo_md5=calculate_md5(file_)) |
|
| 29 |
+ # Ext |
|
| 30 |
+ ext = os.path.splitext(photo.name)[-1] or ext |
|
| 29 | 31 |
|
| 32 |
+ photo, created = PhotoUUIDInfo.objects.select_for_update().get_or_create(photo_md5=calculate_md5(photo)) |
|
| 33 |
+ |
|
| 34 |
+ # 照片路径 |
|
| 30 | 35 |
photo_path = photo.photo_path |
| 31 | 36 |
if not photo_path: |
| 32 | 37 |
photo_path = '{}/{}{}'.format(prefix, shortuuid.uuid(), ext)
|
| 33 | 38 |
if default_storage.exists(photo_path): |
| 34 | 39 |
default_storage.delete(photo_path) |
| 35 |
- default_storage.save(photo_path, file_) |
|
| 40 |
+ default_storage.save(photo_path, photo) |
|
| 36 | 41 |
|
| 37 | 42 |
photo.photo_path = photo_path |
| 38 | 43 |
photo.save() |
| 39 | 44 |
|
| 45 |
+ # 水印 |
|
| 40 | 46 |
if watermark: |
| 41 | 47 |
if not photo.photo_watermark_path: |
| 42 | 48 |
photo_watermark_path = 'photo/{}{}'.format(shortuuid.uuid(), ext)
|
@@ -48,6 +54,7 @@ def file_save(file_, prefix='img', ext='jpeg', watermark=False, thumbnail=False) |
||
| 48 | 54 |
photo.photo_watermark_path |
| 49 | 55 |
photo.save() |
| 50 | 56 |
|
| 57 |
+ # 缩略图 |
|
| 51 | 58 |
if thumbnail: |
| 52 | 59 |
if not photo.photo_thumbnail_path: |
| 53 | 60 |
# 双列: 540, 40-50K |